package com.hex.ds.hdtp.core.app.data.contrast.service;

import com.hex.ds.hdtp.core.app.common.entity.BasicContrastInfo;
import com.hex.ds.hdtp.core.app.data.contrast.dto.CrossDbContrastCommonDto;
import com.hex.ds.hdtp.core.app.data.contrast.dto.CrossDbContrastDataSummaryDto;
import com.hex.ds.hdtp.core.app.data.contrast.dto.CrossDbContrastSingleResultDto;

public interface IContrastDataSummaryService {

    boolean contrastDataSummary(CrossDbContrastCommonDto contrastCommon, CrossDbContrastDataSummaryDto contrastDataSummary, String runLogPkId);

    /**
     * @Method contrastCustomSql
     * @Param
     * @Param contrastInfo
     * @Param contrastDataSummary
     * @Return boolean
     * @Description 自定义sql
     * @Author xin.zhao
     * @Date 2023/12/5 17:27
     * @Version V1.0
     */
    boolean contrastCustomSql(BasicContrastInfo contrastInfo, CrossDbContrastDataSummaryDto contrastDataSummary);

    /**
     * @param contrastInfo
     * @Method contrastHasData
     * @Param
     * @Return java.lang.Boolean
     * @Description 表中是否有数据
     * @Author Wang zhihao
     * @Date 2023/8/17 19:58
     * @Version V1.0
     */
    CrossDbContrastSingleResultDto contrastHasData(CrossDbContrastCommonDto contrastInfo,CrossDbContrastDataSummaryDto contrastDataSummary);

    /**
     * @Method contrastFieldLengthWithMap
     * @Param
     * @Param contrastInfo
     * @Return java.lang.Boolean
     * @Description 全表COUNT对比
     * @Author xin.zhao
     * @Date 2023/9/22 16:47
     * @Version V1.0
     */
    CrossDbContrastSingleResultDto contrastTableCount(CrossDbContrastCommonDto contrastInfo, CrossDbContrastDataSummaryDto contrastDataSummary);

    /**
     * @Method contrastTableCount
     * @Param
     * @Param contrastInfo
     * @Return java.lang.Boolean
     * @Description 字符类型Sum
     * @Author xin.zhao
     * @Date 2023/9/25 9:42
     * @Version V1.0
     */
    Boolean contrastFieldLengthSum(CrossDbContrastCommonDto contrastInfo, CrossDbContrastDataSummaryDto contrastDataSummary);

    /**
     * @Method contrastTableCount
     * @Param
     * @Param contrastInfo
     * @Return java.lang.Boolean
     * @Description 字符类型Sum Trim
     * @Author xin.zhao
     * @Date 2023/9/25 9:42
     * @Version V1.0
     */
    Boolean contrastFieldLengthSumTrim(CrossDbContrastCommonDto contrastInfo, CrossDbContrastDataSummaryDto contrastDataSummary);

    Boolean contrastLengthMax(CrossDbContrastCommonDto contrastInfo, CrossDbContrastDataSummaryDto contrastDataSummary);

    /**
     * @Method contrastNumberSum
     * @Param
     * @Param contrastInfo
     * @Param transferListPkId
     * @Return java.lang.Boolean
     * @Description 数值sum
     * @Author xin.zhao
     * @Date 2023/9/25 17:13
     * @Version V1.0
     */
    Boolean contrastNumberSum(CrossDbContrastCommonDto contrastInfo, CrossDbContrastDataSummaryDto contrastDataSummary);

    /**
     * @param contrastInfo
     * @Method distinctCountComparison
     * @Param
     * @Return java.lang.Boolean
     * @Description 去重Count对比
     * @Author Wang zhihao
     * @Date 2023/8/17 20:08
     * @Version V1.0
     */
    CrossDbContrastSingleResultDto distinctCountComparison(BasicContrastInfo contrastInfo, CrossDbContrastDataSummaryDto contrastDataSummary);

    /**
     * @param contrastInfo
     * @Method groupCountComparison
     * @Param
     * @Return java.lang.Boolean
     * @Description 分组Count对比
     * @Author Wang zhihao
     * @Date 2023/8/17 20:21
     * @Version V1.0
     */
    CrossDbContrastSingleResultDto groupCountComparison(BasicContrastInfo contrastInfo, CrossDbContrastDataSummaryDto contrastDataSummary);

    /**
     * @param contrastInfo
     * @Method fieldCount
     * @Param
     * @Return java.lang.Boolean
     * @Description 字段Count对比
     * @Author Wang zhihao
     * @Date 2023/8/17 20:31
     * @Version V1.0
     */
    CrossDbContrastSingleResultDto fieldCount(BasicContrastInfo contrastInfo, CrossDbContrastDataSummaryDto contrastDataSummary);

    /**
     * @param contrastInfo
     * @Method sumField
     * @Param
     * @Return java.lang.Boolean
     * @Description 字段Sum对比
     * @Author Wang zhihao
     * @Date 2023/8/17 20:37
     * @Version V1.0
     */
    CrossDbContrastSingleResultDto sumField(BasicContrastInfo contrastInfo, CrossDbContrastDataSummaryDto contrastDataSummary);

    /**
     * @param contrastInfo
     * @Method fieldTrim
     * @Param
     * @Return java.lang.Boolean
     * @Description 字段Trim对比
     * @Author Wang zhihao
     * @Date 2023/8/17 20:43
     * @Version V1.0
     */
    CrossDbContrastSingleResultDto fieldTrim(BasicContrastInfo contrastInfo, CrossDbContrastDataSummaryDto contrastDataSummary);

    /**
     * @Method fieldCountIsNull
     * @Param
     * @Param contrastInfo
     * @Return java.lang.Boolean
     * @Description 空字段Count
     * @Author xin.zhao
     * @Date 2023/9/27 20:12
     * @Version V1.0
     */
    CrossDbContrastSingleResultDto fieldCountIsNull(BasicContrastInfo contrastInfo, CrossDbContrastDataSummaryDto contrastDataSummary);
}
